home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1599 / 1553 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  2.5 KB

  1. Subject: Re: Large directories on Minix partitions.
  2. Date: Thu, 9 Jun 94 21:38:30 CDT
  3. From: Juergen Lock <nox@jelal.north.de>
  4. In-Reply-To: <9406061541.AA05146@topo.matups.fr>; from "Thierry Bousch" at Jun 6, 94 5:41 pm
  5. Message-Id: <9406091938.AA00229@jelal.north.de>
  6.  
  7. Thierry Bousch writes:
  8. > Hello Michael,
  9. > > There were about 1100 files left at that point, and it took a good
  10. > > couple hours to delete them all.  This is on a TT, with an admittedly
  11. > > rather slow disk (70M MFM running RLL on an Adaptec 4070), but even so,
  12. > > five seconds per file is a bit sluggish.  This also totally spammed
  13. > > the machine, but the progress indicator gave me faith.
  14. > I have also encountered this problem with a minixfs directory containing
  15. > ~500 files. Apparently, thrashing occurs when the directory contents is
  16. > too big to fit in the cache.
  17.  
  18.  yup!
  19.  
  20. >  You should increase the cache sizes in
  21. > minixfs (default is 10 Kb) and recompile.
  22.  
  23.  i think default 10K is the inode cache...  i had the same thrashing
  24. when rebuilding mintlib (dir gets > 20K), since dir blocks go in syscache
  25. i patched _scache_size to 30 and make was as fast as before.
  26.  
  27.  so just make sure _scache_size is always bigger than the largest
  28. directory you want to access...  here is how i do it, another perlscript :)
  29.  
  30. #! /usr/bin/perl
  31. # xsetl [-x0xhex] symbol file -- patch executable long const
  32. #
  33. $val = 'L';
  34.  
  35. while ($_ = $ARGV[0], /^-/) {
  36.     shift;
  37.     last if /^--$/;
  38.     if (/^-x(.*)/) {
  39.         if ($1) {
  40.             $x = $1;
  41.         } else {
  42.             $x = shift;
  43.             next;
  44.         }
  45.     }
  46. }
  47. $sym = shift;
  48. $f = $ARGV[0];
  49. ($npid = open (NM, "cnm $f|")) || die "nm failed";
  50. $search = << ;
  51. while (<NM>) {
  52.     if (/^$sym\\s+([0-9a-fA-F]+)\\s/) {
  53.         \$off = hex (\$1) + 0x1c;
  54.         chop;
  55.         print;
  56.         break;
  57.     }
  58. }
  59.  
  60. eval $search;
  61. close (NM);
  62. die "not found" if (!defined ($off));
  63.  
  64. foreach (@ARGV) {
  65.     print $_, ":\t" if ($f ne $_);
  66.     open (F, "+< $_") || die "Can't open";
  67.     seek (F, $off, 0) || die "Can't lseek";
  68.     sysread (F, $d, length (pack ($val, 0))) || die "Can't read $sym";
  69.     ($valx) = unpack ($val, $d);
  70.     seek (F, $off, 0) || die "Can't lseek back";
  71.     printf "\n\t= 0x%08lx %d", $valx, $valx;
  72.  
  73.     if (defined ($x)) {
  74.         $x = oct ($x) if $x =~ /^0/;
  75.         $valx = $x;
  76.     }
  77.     $newd = pack ($val, $valx);
  78.     if ($newd ne $d) {
  79.         printf "\t -> 0x%08lx %d", $valx, $valx;
  80.         syswrite (F, $newd, length ($newd)) == length ($newd)
  81.             || die "\nCan't write back $sym";
  82.     }
  83.     print "\n";
  84.     close F || die "Can't close";
  85. }
  86. -- 
  87. J"urgen Lock / nox@jelal.north.de / UUCP: ..!uunet!unido!uniol!jelal!nox
  88.                                 ...ohne Gewehr
  89. PGP public key fingerprint =  8A 18 58 54 03 7B FC 12  1F 8B 63 C7 19 27 CF DA 
  90.